package www.lagou.Dao;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import www.lagou.entity.Employee;
import www.lagou.utils.DruidUtils;

import java.sql.SQLException;
import java.util.List;

public class EmployeeDao {
    /**
     * 需求1: 查询所有的员工信息 (不包含没有部门的员工)。
     * @return
     */
    public List<Employee> getAll() throws SQLException {
        QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());//设置自动创建连接模式
        //创建sql语句查询已经加入部门的所有员工的个人信息
        String sql = "select * from Employee where deptid is not null;";
        //执行sql语句的命令，返回BeanList类封装的结果集对象
        List<Employee> employeeList = qr.query(sql,new BeanListHandler<Employee>(Employee.class));
        return employeeList;
    }

    /**
     * 需求2: 查询每个员工的 姓名, 薪资 和 所属部门名称
     */
    public List<Employee> getNameSalaryDeptName() throws SQLException {
        QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());//设置自动创建连接模式
        //创建sql语句查询员工的姓名，薪水和所属部门id
        String sql = "select name,salary,deptid from Employee;";
        //执行sql语句的命令，返回结果集对象，用beanlisthandler封装结果集
        List<Employee> employeeList = qr.query(sql,new BeanListHandler<Employee>(Employee.class));
        //创建部门的对象指向它自身的引用
        DeptDao dd = new DeptDao();
        //自定义方法获得部门的详细信息，然后封装到员工类的成员变量中
        for(Employee e : employeeList){
            e.setDept(dd.getDept(e.getDeptId()));
        }
        return employeeList;
    }
}
